home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / shortint.d < prev    next >
Text File  |  1996-06-26  |  2KB  |  137 lines

  1.  
  2. /*
  3.  *
  4.  *    Copyright (c) 1993-1996 Algorithms Corporation
  5.  *    3020 Liberty Hills Drive
  6.  *    Franklin, TN  37067
  7.  *
  8.  *    ALL RIGHTS RESERVED.
  9.  *
  10.  *
  11.  *
  12.  */
  13.  
  14.  
  15. #include <math.h>
  16.  
  17. defclass  ShortInteger : Number  {
  18.     short    int    iVal;
  19. };
  20.  
  21. cmeth    gNewWithInt, <vNew> (int val)
  22. {
  23.     object    obj = gNew(super);
  24.     ivType    *iv = ivPtr(obj);
  25.     iVal = (short int) val;
  26.     return(obj);
  27. }
  28.  
  29. imeth    int    gHash()
  30. {
  31.     double    t;
  32.  
  33.     t = .6125423371    * (unsigned) iVal;
  34.     t = t < 0.0 ? -t : t;
  35.     return (int) (BIG_INT * (t - floor(t)));
  36. }
  37.  
  38. imeth    int    gCompare(obj)
  39. {
  40.     short    sv, ov;
  41.  
  42.     ChkArg(obj, 2);
  43.     if (ClassOf(obj) != CLASS)
  44.         return gCompare(super, obj);
  45.     if ((sv=iVal) < (ov=ivPtr(obj)->iVal))
  46.         return -1;
  47.     else if (sv == ov)
  48.         return 0;
  49.     else
  50.         return 1;
  51. }
  52.  
  53. imeth    gStringRepValue()
  54. {
  55.     return vSprintf(String, "%hd", iVal);
  56. }
  57.  
  58. imeth    char    gCharValue()
  59. {
  60.     return (char) iVal;
  61. }
  62.  
  63. imeth    short    gShortValue()
  64. {
  65.     return (short) iVal;
  66. }
  67.  
  68. imeth    unsigned short    gUnsignedShortValue()
  69. {
  70.     return (unsigned short) iVal;
  71. }
  72.  
  73. imeth    long    gLongValue()
  74. {
  75.     return (long) iVal;
  76. }
  77.  
  78. imeth    double    gDoubleValue()
  79. {
  80.     return (double) iVal;
  81. }
  82.  
  83. imeth    void    *gPointerValue()
  84. {
  85.     return (void *) &iVal;
  86. }
  87.  
  88. imeth    gChangeValue(val)
  89. {
  90.     ChkArg(val, 2);
  91.     iVal = gShortValue(val);
  92.     return self;
  93. }
  94.  
  95. imeth    gChangeCharValue(int val)
  96. {
  97.     iVal = (short) val;
  98.     return self;
  99. }
  100.  
  101. imeth    gChangeShortValue(int val)
  102. {
  103.     iVal = (short) val;
  104.     return self;
  105. }
  106.  
  107. imeth    gChangeUShortValue(unsigned val)
  108. {
  109.     iVal = (short) val;
  110.     return self;
  111. }
  112.  
  113. imeth    gChangeLongValue(long val)
  114. {
  115.     iVal = (short) val;
  116.     return self;
  117. }
  118.  
  119. imeth    gChangeDoubleValue(double val)
  120. {
  121.     iVal = (short) val;
  122.     return self;
  123. }
  124.  
  125.  
  126. /*
  127.  *
  128.  *    Copyright (c) 1993-1996 Algorithms Corporation
  129.  *    3020 Liberty Hills Drive
  130.  *    Franklin, TN  37067
  131.  *
  132.  *    ALL RIGHTS RESERVED.
  133.  *
  134.  *
  135.  *
  136.  */
  137.